#ifndef __FLATPAKRUN__H__
#define __FLATPAKRUN__H__

#include "FlatpakBase.h"

class Flatpak::Run : public Base {
    public:
        initCommand(Run, "run");

        Run(const Run &) = default;
        Run(Run &&) = default;
        Run &operator=(const Run &) = default;
        Run &operator=(Run &&) = default;

        // --user/--system
        UserSystem(Run);

        // --arch=
        Archs(Run);

        // TODO: what todo?
        // void run() {
        //     Base::run();
        //     FlatpakCommand::RunCommand(command, args);
        // }

};

#endif  //!__FLATPAKRUN__H__


/****************************************************************
Usage:
  flatpak run [OPTION…] APP [ARGUMENT…] - Run an app

Help Options:
  -h, --help                              Show help options
  --help-all                              Show all help options

Application Options:
  --user                                  Work on the user installation
  --system                                Work on the system-wide installation (default)
  --installation=NAME                     Work on a non-default system-wide installation
  --arch=ARCH                             Arch to use
  --command=COMMAND                       Command to run
  --cwd=DIR                               Directory to run the command in
  --branch=BRANCH                         Branch to use
  -d, --devel                             Use development runtime
  --runtime=RUNTIME                       Runtime to use
  --runtime-version=VERSION               Runtime version to use
  --log-session-bus                       Log session bus calls
  --log-system-bus                        Log system bus calls
  --log-a11y-bus                          Log accessibility bus calls
  --no-a11y-bus                           Don't proxy accessibility bus calls
  --a11y-bus                              Proxy accessibility bus calls (default except when sandboxed)
  --no-session-bus                        Don't proxy session bus calls
  --session-bus                           Proxy session bus calls (default except when sandboxed)
  --no-documents-portal                   Don't start portals
  --file-forwarding                       Enable file forwarding
  --commit                                Run specified commit
  --runtime-commit                        Use specified runtime commit
  --sandbox                               Run completely sandboxed
  -p, --die-with-parent                   Kill processes when the parent process dies
  --parent-pid=PID                        Use PID as parent pid for sharing namespaces
  --parent-expose-pids                    Make processes visible in parent namespace
  --parent-share-pids                     Share process ID namespace with parent
  --instance-id-fd                        Write the instance ID to the given file descriptor
  -v, --verbose                           Show debug information, -vv for more detail
  --ostree-verbose                        Show OSTree debug information
  --share=SHARE                           Share with host
  --unshare=SHARE                         Unshare with host
  --socket=SOCKET                         Expose socket to app
  --nosocket=SOCKET                       Don't expose socket to app
  --device=DEVICE                         Expose device to app
  --nodevice=DEVICE                       Don't expose device to app
  --allow=FEATURE                         Allow feature
  --disallow=FEATURE                      Don't allow feature
  --filesystem=FILESYSTEM[:ro]            Expose filesystem to app (:ro for read-only)
  --nofilesystem=FILESYSTEM               Don't expose filesystem to app
  --env=VAR=VALUE                         Set environment variable
  --env-fd=FD                             Read environment variables in env -0 format from FD
  --unset-env=VAR                         Remove variable from environment
  --own-name=DBUS_NAME                    Allow app to own name on the session bus
  --talk-name=DBUS_NAME                   Allow app to talk to name on the session bus
  --no-talk-name=DBUS_NAME                Don't allow app to talk to name on the session bus
  --system-own-name=DBUS_NAME             Allow app to own name on the system bus
  --system-talk-name=DBUS_NAME            Allow app to talk to name on the system bus
  --system-no-talk-name=DBUS_NAME         Don't allow app to talk to name on the system bus
  --add-policy=SUBSYSTEM.KEY=VALUE        Add generic policy option
  --remove-policy=SUBSYSTEM.KEY=VALUE     Remove generic policy option
  --persist=FILENAME                      Persist home directory subpath

****************************************************************************/